package fr.ensai.testRest.vue;

import javax.annotation.security.DeclareRoles;
import javax.annotation.security.RolesAllowed;
import javax.ejb.EJB;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.ws.rs.Consumes;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

import fr.ensai.testRest.modele.Livre;
import fr.ensai.testRest.service.LibrairieLocale;
import fr.ensai.testRest.service.LibrairieEJB;



@Path("livres")
public class LivreRessource {
	
	
	private static EntityManagerFactory factory = Persistence.createEntityManagerFactory("rest-librairie");

	@EJB
	private LibrairieLocale librairie;
	
	
	@GET
	@Produces("text/plain")
	public String getTitreLivre(){
		return "Le meilleurs des mondes";
	}
	

	@GET
	@Path("/{isbn}")
	@Produces({MediaType.APPLICATION_XML,MediaType.APPLICATION_JSON})
	public Response getLivreByIsbn(@PathParam("isbn") String isbn){
		
//		EntityManager em = factory.createEntityManager();
//		em.getTransaction().begin();
//		
//		Livre livre = em.find(Livre.class,isbn);
		
		
		Livre livre = librairie.trouverLivreByIsbn(isbn);
		
		Response r = null;
		if(livre == null){
			r = Response.status(Response.Status.NOT_FOUND).build();// gestion des code erreurs
		}else r = Response.ok(livre).build();
		
		return r;
	
	}
	
	

	
	@POST
	@Path("/ajouter")
	@Consumes(MediaType.APPLICATION_XML)
	public Response insererLivreByIsbn(final Livre livre){
	
		System.out.println("**");
		System.out.println(livre.getAuteur());
		System.out.println(livre.getTitre());
		System.out.println(livre.getIsbn());
		System.out.println("**");
		
		librairie.insererLivre(livre);
		
		
		return Response.status(Response.Status.CREATED).build();
	}
	
	
	
}
